/*
Array.prototype.filter()  是 JavaScript 数组原型对象上的内置方法，用于创建一个新数组，其中包含原数组中所有通过指定函数测试的元素，不会修改原始数组。
其中， callback  函数用于测试每个元素，它可以接受三个参数：当前元素、当前元素的索引和原始数组本身，返回值是一个布尔值，表示当前元素是否应该包含在新数组中。
如果回调函数返回  true ，当前元素就会被包含在新数组中；如果返回  false ，则被过滤掉。可选的  thisArg  参数用于指定  callback  函数中的  this  值。如果省略  thisArg ，则默认为  undefined 。
 */
Array.prototype.myFilter = function (callback) {
    let res = []
    if (typeof callback !== 'function') {
        throw new TypeError(callback + 'is not a function')
    }
    for (let i = 0; i < this.length; i ++) {
        callback(this[i],i,this) && res.push(this[i])
    }
    return res
}
const arr = [1,2,3,4,5]
console.log(arr.myFilter((item) => {
    return item % 2 === 0
}));
